package DynamicArray;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

import java.util.List;

import static org.junit.jupiter.api.Assertions.*;

public class DynamicArrayTest {
    DynamicArray dynamicArray = new DynamicArray();

    @Test
    void addLast() {
        dynamicArray.addLast(1);
        dynamicArray.addLast(2);
        dynamicArray.addLast(3);
        dynamicArray.addLast(4);
        dynamicArray.addLast(5);
        for (int i = 0; i < 5; i++) {
            System.out.println(dynamicArray.getIndex(i));
        }
    }

    @Test
    void add() {

        dynamicArray.addLast(1);
        dynamicArray.addLast(2);
        dynamicArray.addLast(3);
        dynamicArray.addLast(4);
        dynamicArray.add(2, 5);

        for (int i = 0; i < 5; i++) {
            System.out.println(dynamicArray.getIndex(i));
        }
    }

    @Test
    void foreach() {
        dynamicArray.addLast(1);
        dynamicArray.addLast(2);
        dynamicArray.addLast(3);
        dynamicArray.addLast(4);

        dynamicArray.foreach((element)->{
            System.out.println(element);
        });
    }

    @Test
    void remove() {
        dynamicArray.addLast(1);
        dynamicArray.addLast(2);
        dynamicArray.addLast(3);
        dynamicArray.addLast(4);
        dynamicArray.addLast(5);

        int removed = dynamicArray.remove(2);
        System.out.println(removed);
        System.out.println("--------------");
        dynamicArray.foreach((element)->{
            System.out.println(element);
        });
    }

    @Test
    @DisplayName("扩容测试")
    void checkAndGrow() {
        for (int i = 0; i < 9; i++) {
            dynamicArray.addLast(i+1);
        }
        assertIterableEquals(
                List.of(1,2,3,4,5,6,7,8,9),
                dynamicArray
        );
    }
}